<template>
  <!-- 封装element-plus的弹窗 -->
  
  <div>
    <el-dialog
      :show-close="showClose"
      :draggable="true"
      :model-value="show"
      :close-on-click-modal="false"
      :title="title"
      class="cust-dialog"
      :top="top + 'px'"
      :width="width"
      @close="close"
    >

    <div class="dialog-body" :style="{ 'max-height': maxHeight + 'px', padding: padding + 'px' }">
        <slot></slot>
    </div>

    <template v-if="(buttons && buttons.length > 0) || showCancel">
        <div class="dialog-footer">
            <el-button link @click="close" v-if="showCancel"> 取消 </el-button>
            <el-button 
              v-for="btn in buttons" 
              :type="btn.type || 'primary'" 
              @click="btn.click"
            >
              {{ btn.text }}
            </el-button>
        </div>
    </template>
     
    </el-dialog>
  </div>
</template>
<script setup>

const props = defineProps({
  title: {
    type: String,
  },
  //弹窗是否展示
  show: {
    type: Boolean,
    default: false,
  },
  showClose: {
    type: Boolean,
    default: true,
  },
  //取消
  showCancel: {
    type: Boolean,
    default: true,
  },
  top: {
    type: Number,
    default: 50,
  },
  width: {
    type: String,
    default: "50%",
  },
  buttons: {
    type: Array,
  },
  padding: {
    type: Number,
    default: 15,
  }
});

const maxHeight = window.innerHeight - props.top - 100;

const emit = defineEmits();
const close = () => {
  emit("close");
};

</script>
<style lang="scss">

.cust-dialog {

  margin: 30px auto 10px !important;

  .el-dialog_body {
    padding: 0px;
  }

  .dialog-body {
    border-top: 1px solid #ddd;
    border-bottom: 1px solid #ddd;
    min-height: 80px;
    overflow: auto;
  }

  .dialog-footer {
    text-align: right;
    padding: 5px 20px;
  }
}

</style>